// Loggr::Tools::TimeCounter
// Tools make Loggr be more autonomous.
// By George Ulyanov (c) 2010

#ifndef LOGGR_TOOLS_TIMECOUNTER_H_
#define LOGGR_TOOLS_TIMECOUNTER_H_

namespace Loggr
{
    namespace Tools
    {
        struct TimeCounterData;   /** Pre-declaration. */

        /**
        *   @brief Own universal time counter.
        */
        class TimeCounter
        {
        private:
            TimeCounterData* m_data;
        public:
            /**
            *   @brief Default constructor.
            */
            TimeCounter();

            /**
            *   @brief Destructor.
            */
            ~TimeCounter() throw();

            /**
            *   @brief Reset all values.
            */
            void Reset();

            /**
            *   @brief Return time since reset or start.
			*	@return Value in microseconds.
            */
            unsigned long GetPeriod();
        };
    }
    // namespace Tools
}
// namespace Loggr

#endif // LOGGR_TOOLS_TIMECOUNTER_H_
